package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.Engineer;
import com.shrcl.engineerprocess.domain.EngineerProjectAssignmentStatus;
import com.shrcl.engineerprocess.domain.EngineerWorkOrder;
import com.shrcl.engineerprocess.domain.WorkSummary;
import com.shrcl.engineerprocess.domain.impl.EngineerProjectAssignmentImpl;
import com.shrcl.engineerprocess.domain.proxy.EngineerProjectAssignmentProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = EngineerProjectAssignmentImpl.class)
public interface EngineerProjectAssignment extends IModelObject {
  public abstract EngineerWorkOrder getWorkOrder();
  
  public abstract EngineerProjectAssignment setWorkOrder(final EngineerWorkOrder workOrder);
  
  public abstract Date getStartDate();
  
  public abstract EngineerProjectAssignment setStartDate(final Date startDate);
  
  public abstract Date getEndDate();
  
  public abstract EngineerProjectAssignment setEndDate(final Date endDate);
  
  public abstract Engineer getEngineer();
  
  public abstract EngineerProjectAssignment setEngineer(final Engineer engineer);
  
  public abstract WorkSummary getDailySummary();
  
  public abstract EngineerProjectAssignment setDailySummary(final WorkSummary dailySummary);
  
  public abstract void checkValid();
  
  public abstract EngineerProjectAssignmentStatus getStatus();
  
  public abstract void start();
  
  public abstract void checkExecutingTimer();
  
  public abstract void startExecute();
  
  public abstract void finish();
  
  public abstract void updateV(final Procedure1<? super EngineerProjectAssignment> updater);
  
  public abstract void doSummary(final String summary);
  
  public abstract void cancel();
  
  public abstract Boolean isExecuting();
  
  public abstract Boolean isFinished();
  
  public abstract Boolean isCancelled();
  
  public abstract Boolean isCreated();
  
  public abstract EngineerProjectAssignmentProxy toProxy();
}
